package mireille.learning.devoir1;

import mireille.learning.devoir1.Exceptions.CompteException;
import mireille.learning.devoir1.Exceptions.OperationPourCrediterNonAutoriseException;
import mireille.learning.devoir1.Exceptions.DebitNonAutoriseException;

/**
 * <p>
 * Création de la classe CompteEpargne, une sous-classe de CompteBancaire
 * (classe fille).
 * </p>
 *
 * @author Mireille Tepounnou
 */
public class CompteEpargne extends CompteBancaire {
    
    //le taux d'intérêt est une constante, il sera donc le même pour tous les comptes d'épargne
   public static final double tauxInteret=0.04; 

    /**
     * Constructeur de la classe CompteEpargne avec attribution des valeurs.
     *
     * @param nom nom du compte
     * @param adresse adresse du compte
     * @param tauxInteret taux d'intérêt
     */
    public CompteEpargne(String nom, String adresse) {

        // champs communs à la superclasse et à la sous-classe
        super(nom, adresse);
        
    }

    /**
     * <p>Redéfinissons la méthode public void débiter (double montant) qui
     * réalisera le débit si le solde ne devient pas négatif et qui affichera un
     * message si l’opération de débit échoue.</p>
     * <p>L'exception CompteException servirà à gerer le débit non autorisé
     * sur le compte d'épargne si le solde ou le montant à débiter est négatif</p> 
     *
     * @param montant montant à débiter
     */
    @Override
    public void debiter(double montant) throws DebitNonAutoriseException {
               if (montant <= this.getSolde()) {
                super.debiter(montant);
            } else {
                   throw new DebitNonAutoriseException ("Le solde du compte est insuffisant "
                        + "pour effectuer la transaction de débit");
            }
        

    }

    /**
     * Redéfinissons la méthode String toString () qui complète la chaîne de
     * caractères retournée par la méthode toString de la classe CompteBancaire
     * de la mention : "Compte d’épargne".
     *
     * @return
     */
    @Override
    public String toString() {
        String str1 = "Compte d'épargne : " + "\n";
        return str1 + super.toString();
    }

    /**
     * Définissons la méthode public void traitementQuotidien () qui crédite le
     * compte d’un montant égal au produit du solde par le taux d’intérêt.
     */
    @Override
    public void traitementQuotidien() throws OperationPourCrediterNonAutoriseException, DebitNonAutoriseException {
        crediter(this.getSolde() * tauxInteret);
    }
}
